package org.metasketch.simulator.petri;

import java.util.HashMap;
import java.util.Map;
import java.util.Stack;

public class TokenStack {

	Map<Long, Token> map = new HashMap<Long, Token>();
	Stack<Token> stack = new Stack<Token>();

	public void addToken(Token token) {
		stack.add(token);
		map.put(token.getId(), token);
	}

	public Token getFirstToken() {
		return stack.firstElement();
	}

	public Token removeFirstToken() {
		Token token = stack.firstElement();
		stack.remove(token);
		map.remove(token.getId());

		return token;
	}

	public Token getToken(Long id) {
		return map.get(id);
	}

	public Token removeToken(Long id) {
		Token token = map.get(id);

		stack.remove(token);
		map.remove(id);

		return token;
	}

}
